當專案一大,動則幾千行的source code 是家常便飯。就算搭配 #region
使用,還是很難管理。即使將公共的lib拆出去,也無法避免公共層過大。經學長推薦,筆者研讀lidgren原始碼,才了解C# 有一個特殊的用法partial可以協助Prgrammer採分檔案。
只需要在class前面加上partial 關鍵字即可。而當加上該關鍵字以後的class name就可以分別存於不同cs檔,如下:
//filename : test.cs
namespace IThome
{
public partial class test
{
}
}
//filename : test.handle.cs
namespace IThome
{
public partial class test
{
}
}
如上,系統組譯的時候會將兩個檔案合併起來。事實上,在專案中,系統已經將兩個檔案視為同一個類別。也許很多人會問。為什麼要將檔案分開?用提供網路服務的類別來說明,如果您的類別提供upload、download的服務,upload佔用了500行,download佔用了600行。全部混合在同一個檔案中,不易閱讀;如果拆成兩個檔案network.upload.cs、network.download.cs則從功能上很容易區分,方便維護。要查code的時候很方便就可以取得對應的位置。
並非每個方案都是完美無瑕的,如果將這個方法運用在winform開發上,其實也可以,但是其他細分出去的cs檔無法順利從方案總管double-click開啟。必須右鍵-->檢視原始碼才可以順利開啟。(筆者都選檔案直接按F7)這或許是這個功能最不方便的地方吧。
筆者認為,若您的物件具備很明顯的功能區隔且代碼很長(1000行以上),如果無法抽像化成數個類別,那麼使用partial或許是一個不錯的解決方案。若source code 在1000行以內,進行這類型的拆分,除非有特殊需求,否則筆者還是不建議這樣做。
lidgren:
Github
Google Code